What Is Cloud Native?

Get introduced to cloud-native and the role of an orchestrator.

A cloud-native application must :

  • Scale on demand
  • Self-heal
  • Support zero-downtime rolling updates
  • Run anywhere that has Kubernetes

Let us just take a second to define what some of these buzzwords mean.

Scale on demand#

Scaling on demand is the ability for an application and associated infrastructure to automatically scale up and down based on demand.

If configured correctly, Kubernetes can automatically scale your applications and infrastructure up when demand increases and scale them down when the demand drops off.

Self-heal applications#

Kubernetes can also self-heal applications and individual microservices.

This requires a bit more knowledge of Kubernetes, which will be covered later.

But for now, when you deploy an application on Kubernetes, you will have to specify what the application should look like. The following specifications will be necessary:

  • The number of instances of each microservice
  • The names of the networks to attach to

Kubernetes saves this as your desired state and monitors your application to make sure it always matches this desired state. If something changes, for example if an instance crashes, Kubernetes notices this and spins up a replacement. This is called self-healing.

Self-healing

Zero-downtime rolling updates#

Zero-downtime rolling updates is just a fancy way of saying you can incrementally update parts of an application without having to shut it down and without clients even noticing. You will see this in action later in the course.

Run anywhere#

One final point of interest regarding cloud-native is that a cloud-native application is not an application that only runs in the public cloud. No! A cloud-native application can run anywhere you have Kubernetes, such as AWS, Azure, Linode, your on-premises datacenter, or even your Raspberry Pi cluster at home.

To summarize, cloud-native applications can self-heal, automatically scale, and be updated without downtime. They can also run wherever you have Kubernetes.

Now, we’ll explore what an orchestrator is in this context.

What is an orchestrator?#

Consider an orchestra. It is a group of individual musicians who play different musical instruments. Each musician and instrument can be different and have a different role to play when the music starts. There are violins, cellos, harps, oboes, flutes, clarinets, trumpets, trombones, drums, and even triangles. Each one is different from the other and has a separate role in the orchestra.

As shown in the illustration below, each one is an individual and has not been assigned a role –it is a mess, even the drum is upside-down.

An orchestra

A conductor comes along with the sheet music and enforces order. She groups the strings together at the front of the stage, woodwind in the middle, brass a little further back, and percussion high up and right at the back. She also directs everything, telling each group when to play, how loud or soft to play, and how fast to play.

In short, the conductor takes the chaos from the above illustration, imposes the order, and produces beautiful music along the way, as can be seen below:

The conductor

Well, cloud-native microservices applications are just like orchestras.

Each cloud-native application consists of numerous small microservices that carry out different jobs. Some serve web requests, authenticate sessions, and conduct logging, while others persist data and generate reports. But just like an orchestra, they need someone, or something to organize them into a useful application.

Enter Kubernetes#

Kubernetes takes a mess of independent microservices and organizes them into a meaningful application, as is shown below. As was previously mentioned, it can:

  • Scale the application
  • Self-heal the application
  • Update the application
Kubernetes as an orchestrator

In short, an orchestrator (like Kubernetes) brings together a set of microservices and organizes them into an application that brings value. It also provides and manages cloud-native features such as scaling, self-healing, and updating.

What Are Microservices?

Why Do We Need Kubernetes?